package com.polymorphismodeldemo3;

import javax.xml.soap.SOAPMessage;

/**
 * @Auther: shiquan
 * @Date: 2024/10/21 - 10 - 21 -20:51
 */
public class Person {
    /*
    3.定义Person类//饲养员
		属性：
			姓名，年龄
		行为：
			keepPet(Dog dog,String something)方法
				功能：喂养宠物狗，something表示喂养的东西
		行为：
			keepPet(Cat cat,String something)方法
				功能：喂养宠物猫，something表示喂养的东西
		生成空参有参构造，set和get方法

     */
    private int age;
    private String name ;

    public Person() {
    }

    public Person(int age, String name) {
        this.age = age;
        this.name = name;
    }

    /*
    	4.定义测试类(完成以下打印效果):
		keepPet(Dog dog,String something)方法打印内容如下：
			年龄为30岁的老王养了一只黑颜色的2岁的狗
			2岁的黑颜色的狗两只前腿死死的抱住骨头猛吃  //狗吃东西的描述
		keepPet(Cat cat,String somethind)方法打印内容如下：
			年龄为25岁的老李养了一只灰颜色的3岁的猫
			3岁的灰颜色的猫眯着眼睛侧着头吃鱼//猫吃东西
     */
    //养狗
   /* public void keepPet(Dog dog, String something){ //年龄 名字 颜色 可能发生变化
        System.out.println("年龄为"+age+"岁的"+name+"养了一只"+dog.getColor()+"颜色的"+dog.getAge()+"岁的狗");
        dog.eat(something);
    }
    //养猫
    public void keepPet(Cat cat,String somthing){
        System.out.println("年龄为"+age+"岁的"+name+"养了一只"+cat.getColor()+"颜色的"+cat.getAge()+"岁的狗");
        cat.eat(somthing);
    }*/
  //一个方法可以接受到所有的动物   包括猫  包括狗
    //方法的形参 写他们的父类
    public void keepPet(Animal a,String something) {
        if (a instanceof Dog ) {
            Dog d= (Dog) a;
            System.out.println("年龄为" + age + "岁的" + name + "养了一只" + a.getColor() + "颜色的" + a.getAge() + "岁的狗");
            d.eat(something);
        }else if (a instanceof Cat){ //传递的是不是猫
            Cat c = (Cat) a;
            System.out.println("年龄为" + age + "岁的" + name + "养了一只" + c.getColor() + "颜色的" + c.getAge() + "岁的猫");
            c.eat(something);

        }
    }

}
